# 01 - 项目概览

## Claude Code 是什么

Claude Code 是 Anthropic 开发的 **CLI 工具**，让用户在终端中与 Claude AI 交互，完成软件工程任务：
- 编辑文件、运行命令、搜索代码库
- 协调多 Agent 工作流
- 集成 IDE（VS Code、JetBrains）

它不是一个简单的聊天客户端，而是一个**产品级的 AI Agent 框架**。

---

## 源码来源

此源码通过 npm 包中暴露的 `.map` 文件泄露（2026-03-31）。发布的 source map 引用了 Anthropic R2 存储桶中未混淆的 TypeScript 源文件。

---

## 数字一览

| 指标 | 数值 |
|------|------|
| TypeScript/TSX 文件 | ~1,900 |
| 代码行数 | 512,000+ |
| Tool 数量 | 40+ |
| 斜杠命令 | 100+ |
| React 组件 | 140+ |
| 服务模块 | 20+ |

---

## 目录结构

```
src/
├── main.tsx                # 入口：Commander.js CLI
├── Tool.ts                 # Tool 类型定义
├── tools.ts                # Tool 注册表
├── query.ts                # 单轮查询执行
├── QueryEngine.ts          # 会话引擎
├── commands.ts             # 命令注册表
├── context.ts              # 上下文收集
├── cost-tracker.ts         # 费用追踪
│
├── tools/                  # 40+ Tool 实现
│   ├── BashTool/           #   Shell 命令执行
│   ├── FileReadTool/       #   文件读取
│   ├── FileEditTool/       #   文件编辑
│   ├── FileWriteTool/      #   文件写入
│   ├── GlobTool/           #   文件模式搜索
│   ├── GrepTool/           #   内容搜索（ripgrep）
│   ├── AgentTool/          #   子 Agent 生成
│   ├── WebFetchTool/       #   URL 抓取
│   ├── WebSearchTool/      #   网页搜索
│   ├── MCPTool/            #   MCP 工具调用
│   ├── SendMessageTool/    #   Agent 间通信
│   ├── TeamCreateTool/     #   团队 Agent 管理
│   └── ...                 #   更多 Tool
│
├── commands/               # 100+ 斜杠命令实现
│   ├── commit.ts           #   /commit
│   ├── compact/            #   /compact
│   ├── mcp/                #   /mcp
│   ├── review.ts           #   /review
│   ├── vim/                #   /vim
│   └── ...
│
├── components/             # 140+ React 终端 UI 组件
├── hooks/                  # React Hooks
├── services/               # 外部服务集成
│   ├── api/                #   Anthropic API
│   ├── mcp/                #   MCP 协议
│   ├── oauth/              #   OAuth 认证
│   ├── lsp/                #   LSP 语言服务
│   ├── analytics/          #   分析 & 特性标志
│   └── compact/            #   上下文压缩
│
├── bridge/                 # IDE 集成桥接
├── coordinator/            # 多 Agent 协调器
├── state/                  # 状态管理
├── memdir/                 # 持久化记忆
├── skills/                 # 技能系统
├── plugins/                # 插件系统
├── schemas/                # Zod 配置校验
├── entrypoints/            # 初始化与 CLI 入口
├── ink/                    # 自定义终端渲染器
├── types/                  # TypeScript 类型
├── utils/                  # 工具函数
├── vim/                    # Vim 模式
├── voice/                  # 语音输入
├── remote/                 # 远程会话
├── server/                 # 服务器模式
├── tasks/                  # 任务管理
├── keybindings/            # 快捷键配置
├── buddy/                  # 伴侣精灵动画
└── query/                  # 查询管道辅助
```

---

## 核心模块关系

```
用户输入
  │
  ▼
entrypoints/cli.tsx (快速路径分发)
  │
  ▼
entrypoints/init.ts (全局初始化)
  │
  ▼
main.tsx (CLI 入口)
  │
  ▼
QueryEngine.ts (会话管理)
  │
  ├──→ query.ts (单轮执行)
  │       │
  │       ├──→ Anthropic API (发送消息、接收流)
  │       │
  │       └──→ Tool 调度
  │              │
  │              ├──→ 权限检查
  │              └──→ Tool.call() 执行
  │
  ├──→ commands.ts (斜杠命令)
  │
  └──→ context.ts (系统提示构建)
```

> **要点**: `main.tsx` 是入口，`QueryEngine.ts` 管理整个会话生命周期，`query.ts` 处理每一轮对话，Tool 系统是 Claude 与外部世界交互的通道。
